From: Jasper St. Pierre Date: Thu, 9 May 2013 19:10:29 +0000 (-0400) Subject: gtkactionmuxer: Reintroduce the passing of event timestamps X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~4188 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a6a2cea4142e0f16608485ca05a24ec396482ca0;p=gnome-shell.git gtkactionmuxer: Reintroduce the passing of event timestamps This is a hack we have in our local fork as compared to upstream; work on a generic "hook" system in here is ongoing, but until then, this is the easiest way to do it. https://bugzilla.gnome.org/show_bug.cgi?id=700257 --- diff --git a/src/gtkactionmuxer.c b/src/gtkactionmuxer.c index 4618564ae..be6696501 100644 --- a/src/gtkactionmuxer.c +++ b/src/gtkactionmuxer.c @@ -24,6 +24,8 @@ #include "gtkactionobservable.h" #include "gtkactionobserver.h" +#include + #include /** @@ -377,6 +379,26 @@ gtk_action_muxer_activate_action (GActionGroup *action_group, g_action_group_activate_action (G_ACTION_GROUP (muxer->parent), action_name, parameter); } +static GVariant * +get_platform_data (void) +{ + gchar time[32]; + GVariantBuilder *builder; + GVariant *result; + + g_snprintf (time, 32, "_TIME%d", clutter_get_current_event_time ()); + + builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); + + g_variant_builder_add (builder, "{sv}", "desktop-startup-id", + g_variant_new_string (time)); + + result = g_variant_builder_end (builder); + g_variant_builder_unref (builder); + + return result; +} + static void gtk_action_muxer_change_action_state (GActionGroup *action_group, const gchar *action_name, @@ -389,7 +411,15 @@ gtk_action_muxer_change_action_state (GActionGroup *action_group, group = gtk_action_muxer_find_group (muxer, action_name, &unprefixed_name); if (group) - g_action_group_change_action_state (group->group, unprefixed_name, state); + { + if (G_IS_REMOTE_ACTION_GROUP (group->group)) + g_remote_action_group_change_action_state_full (G_REMOTE_ACTION_GROUP (group->group), + unprefixed_name, + state, + get_platform_data ()); + else + g_action_group_change_action_state (group->group, unprefixed_name, state); + } else if (muxer->parent) g_action_group_change_action_state (G_ACTION_GROUP (muxer->parent), action_name, state); }